"""author: wenyao
   data: 2021/11/11
   project: cjh
"""
# def add(a, b):
#     print("exec add function")
#     return a+b
#
# print( add(1,2))
# result = add(3,4)
# print(result)

#1、方便维护，模块设计
#2、减少代码冗余

#函数的参数
#1、形参: 函数定义的时候，指定的参数
#2、实参： 函数调用的时候，传递的参数

#按形参来分：
#1、必选参数
#2、默认参数
#3、可变长位置参数
#4、可变长关键字参数

#实参来分：
#1、位置参数
#2、关键字参数

#必选参数
# def  stuinfo(name, age, sex):
#     print(f"myname is {name}, my age is {age}, my sex is {sex}")
#
# #位置参数
# stuinfo("sc",4, "f")

#默认参数
# def stuinfo(name, age, sex="f"):
#     print(f"myname is {name}, my age is {age}, my sex is {sex}")
#
# stuinfo("sc",4)
# stuinfo("sc",5, "m")
#
# #关键字参数



# stuinfo("sc",6,sex="m")

#注意定义顺序 默认参数放在必须参数后面
#注意调用顺序 关键字参数必须放在位置参数的后面

#可变长位置参数
# def myargs(name, *num):
#     print(f"{name}:{num}")
#     print(type(num), *num) #-->print(type(num),1,2)
#
# myargs("sc")
# myargs("sc1",1)
# myargs("sc2",1,2)

#packing 和 unpacking
#packing
#1,2 -- >元组(1,2)
#*num  unpacking
#(1,2) --> 1,2

#可变长关键字参数
# def myargs2(**num):
#     print(num)
#    # print(**num) -- > print(a=1,b=2)
#
# myargs2(a=1,b=2)
# myargs2(a=1)
# myargs2(a=1,b=2,c=3)
#packing  --> a=1, b=2  --> {"a":1,"b":2}
#unpacking -- > {"a":1,"b":2}  --> a=1,b=2

#形参定义顺序
#func01(必选参数, 可变长位置参数， 默认参数， 可变长关键字参数 )
#实参
#func01(位置参数，关键字参数)

# def add(*num):
#     # result = 0
#     # # for i in num:
#     # #     result += i
#     # # print(f"和为：{result}")
#     print(f"和为：{sum(num)}")
# add(1,2,3,4)
#
# def add2(**num):
#     # result = 0
#     # for i in num:
#     #     result += num[i]
#     # print(f"和为:{result}")
#     print(f"字典的和：{sum(num.values())}")
# add2(a=1, b=2, c=3, d=4)

#函数的return语句
#退出函数，并且返回结果的
#一个函数一旦执行到return就退出， 不会执行后面的语句
#如果函数没有return语句，默认返回None。如果return后面不接任何表达式，也是返回None
#return可以有多个
#return 一次也可以返回多个值

def maxnum(x,y):
    print("return 语句。。。。")
    if x>y:
        print("return x")
        # return x
    elif x<y:
        print("return y")
        return
    # return x,y
    print("return end....")
result = maxnum(3,5)
# i,j = maxnum(5,5)
print(f"结果为{result}")


